# coding:utf-8
'''
Created on 2011-3-5
学习Python的常用内置函数。type、str、dir和其它的Python内置函数都包含到了__builtin__这个
特殊的模块中。可以理解为：Python在启动时自动执行了from __builtin__ import *，此语句将
所有的内置函数导入到当前命名空间，所以在这个命名空间中可以直接使用这些内置函数。
@author: Administrator
'''

#===================================================
# type函数：type函数返回任意对象的数据类型。
#===================================================
print type(1)
li = []
print type(li)
import apihelper
print type(apihelper)
import types
print type(apihelper) == types.ModuleType

#===================================================
# str函数：str函数将数据强制转换为字符串。每种数据类型
# 都可以强制转换为字符串。
#===================================================
print str(1)
horsemen = ['war', 'pestilence', 'famine']
print horsemen
print str(horsemen)
print str(apihelper)
print str(None)

#===================================================
# dir函数：dir函数返回任意对象的属性和方法列表，包括模块
# 对象、函数对象、字符串对象、列表对象、字典对象……等各种对象
#===================================================
li = []
print dir(li) # 返回的是一个包含字符串的list类型
d = {}
print dir(d)
print dir(apihelper)

#===================================================
# callable函数：callable函数可以接受任何对象作为参数，
# 如果参数对象是可调用的则返回True，否则返回False。可
# 调用对象包含函数、类方法、甚至类本身。
#===================================================
import string
print string.punctuation
print string.join
print callable(string.punctuation) # False，因为punctuation是一个属性而不是函数，所以不能执行
print callable(string.join) # True，join是一个函数，可以执行，所以返回True

#===================================================
# getattr函数：在Python中函数也是对象，而getattr函数可以
# 得到一个直到运行时才知道名称的函数对象的引用。
#===================================================
li = ["Atlantis", "SeeNoEvil"]
print li.pop
print getattr(li, 'pop') # 获取list的pop函数对象
print li
getattr(li, 'append')("Einstein") # 获取list的append函数，并执行该函数
print li

#===================================================
# 查看__builtin__中所有的内置函数
#===================================================
import __builtin__
apihelper.info(__builtin__)